package delphorm.web.aspect;

import java.lang.reflect.Method;

import javax.servlet.http.HttpServletRequest;

import org.springframework.aop.MethodBeforeAdvice;

import delphorm.entite.personne.DroitGroupe;
import delphorm.entite.personne.GroupeCollectif;
import delphorm.entite.personne.Utilisateur;
import delphorm.service.personne.IGroupeCollectif;
import delphorm.web.exception.SecuriteException;


public class VerifierSupprimerGroupeCollectif implements MethodBeforeAdvice, Verif {
	IGroupeCollectif serviceGroupeCollectif;


	public IGroupeCollectif getServiceGroupeCollectif() {
		return serviceGroupeCollectif;
	}

	public void setServiceGroupeCollectif(IGroupeCollectif serviceGroupeCollectif) {
		this.serviceGroupeCollectif = serviceGroupeCollectif;
	}

	public void before(Method method, Object[] arguments, Object target) 
			throws Throwable {
		Object[] args = new Object[2];
		args[0] = ((HttpServletRequest)arguments[0]).getSession().getAttribute("utilisateur");
		args[1] = new Long(Long.parseLong((String)((HttpServletRequest)arguments[0]).getParameter("idgroupecollectif")));
						 
		if(!doVerif(args))
			throw new SecuriteException("exception.afficherutilisateur.pasledroit");
		
	}
	
	public boolean doVerif(Object[] objects) {
		Utilisateur utilisateur = (Utilisateur)objects[0];
		
		
		//l'utilisateur a le droit supprimerTousGroupes
		if(utilisateur.getDroitsGeneraux().getSupprimerTousGroupes().booleanValue() == true)
			return true;
		//Ben est membre du groupe avec le droit supprimerGroupe
		else
		{
//			récupère le groupe
			GroupeCollectif groupe = serviceGroupeCollectif.chercherGroupeParId((Long)objects[1]);
			DroitGroupe droitGroupe = utilisateur.getDroitGroupeCollectif(groupe);
			if(droitGroupe.getSupprimerGroupe().booleanValue() == true)
				return true;
		}
		return false;
	}

	

}
